



#ifdef Win_Visual_Studio


#include<stdio.h>
void print_str_(char* str, int len) 
{
	for (int i = 0; i < len; i++) {
		printf("%c", str[i]);
	}
}

#include"mcu_.h"


//  下面实现时间相关的函数
#include<time.h>

clock_t start, clock_now;

unt32 mcu_time_ms(void)
{
	clock_now = clock();
	return (clock_now - start);
}

void mcu_delay_ms(unt32 k)
{
	clock_t clock_now = clock();
	clock_t clock_end = clock_now + k;
	int i = 0;
	while (clock_end > clock_now)
	{
		clock_now = clock();
		i++;
	}
};





// mcu外设初始化。
void mcu_init() {}

/// <summary>
/// 串口1发送一个字符串。以空字符'\0'作为字符串结束符。
/// </summary>
/// <param name="str">发送的字符串</param>
void mcu_uart_sendstring(uart* u, const char* str) {}

/// <summary>
/// 串口1发送字符串的前n各字符。
/// </summary>
/// <param name="str">发送的字符串</param>
/// <param name="n">字符的个数</param>
void mcu_uart_sendstring_(uart* u, const char* str, int n) { for (int i = 0; i < n; i++)printfs("%c", str[i]); }

/// <summary>
/// 设置io口的输出值。在mcu.c中实现
/// 具体的实现方法和效果由用户自定义。如果是pwm口，则是设置占空比0-999。
/// </summary>
/// <param name="io">引脚号</param>
/// <param name="value">引脚值</param>
void mcu_set_io(gpio* io, unt32 value) {}

/// <summary>
/// 读取io口的值。在mcu.c中实现
/// 具体的实现方法和效果由用户自定义。如果是adc，则读出adc的值，如果是普通io，则是0，1的值。
/// </summary>
/// <param name="io">引脚号</param>
/// <returns>引脚值</returns>
unt32 mcu_read_io(gpio* io) {}

// 将io口设置成输出模式
void mcu_set_io_out(gpio* io) {}

// 将io口设置成输入模式
void mcu_set_io_in(gpio* io) {}



//  下面是文件操作相关


#include<stdio.h>
#include<stdlib.h>//exit()函数的头文件


/// <summary>
/// 从 "D:\\graph.txt" 提取图的数据信息。
/// 数据格式： 尾节点值 头节点值 边表值
/// </summary>
/// <param name="str">字符串数组</param>
/// <param name="str_capacity">字符串最大容量</param>
/// <returns>字符串长度，不会超出字符串最大容量，返回-1表示没找到图的文件</returns>
int get_graph_string(char* str,int str_capacity)
{
	FILE* fp;
	{
		fp = fopen("D:\\graph.txt", "r+");
		if (fp == NULL) {
		//	printfs(" \r\n open failed!");
			return -1;
		}
		else {
			printfs(" \r\n open succeess!");
			int i = 0;
			char c = fgetc(fp);
			while (c != EOF)
			{
				str[i] = c;
				i++;
				//	printfs("%c", c);
				c = fgetc(fp);
			}
			str[i] = 0;
			fclose(fp);
			return i;
		}
	}

}

int main_file()
{
	FILE* fp;

	while (true)
	{
		mcu_delay_ms(500);

		fp = fopen("D:\\graph.txt", "r+");
		
		if (fp == NULL) {
			printfs(" \r\n open failed \r\n");
		}
		else {
			printfs(" \r\n open succeess \r\n");

			char c = fgetc(fp);
			while (c != EOF)
			{
			//	printfs("%c", c);
				c = fgetc(fp);
			}
			fclose(fp);
		}

	}

	//if (feof(fp))
	//{
	//	printf("NULL");
	//	exit(0);//表示如果读取为空文件就正常退出
	//}
	//char s[100];
	//fgets(s, 10, fp);//最大读取10个
	//printf("%s", s);
}


#endif // Win_Visual_Studio



#ifndef Win_Visual_Studio





#include"mcu_.h"

#include<stdio.h>
void print_str_(char* str, int len) 
{

	for (int i = 0; i < len; i++) {
		
		printfs("%c", str[i]);
	}
}


//  下面实现时间相关的函数

unt32 mcu_time_ms(void)
{
	return 8;
}

void mcu_delay_ms(unt32 k)
{
	
};





// mcu外设初始化。
void mcu_init() {}

/// <summary>
/// 串口1发送一个字符串。以空字符'\0'作为字符串结束符。
/// </summary>
/// <param name="str">发送的字符串</param>
void mcu_uart_sendstring(uart* u, const char* str) {}

/// <summary>
/// 串口1发送字符串的前n各字符。
/// </summary>
/// <param name="str">发送的字符串</param>
/// <param name="n">字符的个数</param>
void mcu_uart_sendstring_(uart* u, const char* str, int n) { for (int i = 0; i < n; i++)printfs("%c", str[i]); }

/// <summary>
/// 设置io口的输出值。在mcu.c中实现
/// 具体的实现方法和效果由用户自定义。如果是pwm口，则是设置占空比0-999。
/// </summary>
/// <param name="io">引脚号</param>
/// <param name="value">引脚值</param>
void mcu_set_io(gpio* io, unt32 value) {}

/// <summary>
/// 读取io口的值。在mcu.c中实现
/// 具体的实现方法和效果由用户自定义。如果是adc，则读出adc的值，如果是普通io，则是0，1的值。
/// </summary>
/// <param name="io">引脚号</param>
/// <returns>引脚值</returns>
unt32 mcu_read_io(gpio* io) {}

// 将io口设置成输出模式
void mcu_set_io_out(gpio* io) {}

// 将io口设置成输入模式
void mcu_set_io_in(gpio* io) {}








#include"gl_GraphicsDevice.h"

/// 初始化绘图设备
void graphics_init(void){}

void graphics_draw_point(int x, int y, COLOR_RGB color)
{
//	LCD_Draw_Points_ARGB32(x,y,color);
}

void graphics_fill_area(int left, int top, int w, int h, COLOR_RGB color)
{
//	LCD_Draw_Rectangle_ARGB32(left,top,w,h,color);
}

void graphics_draw_image(int left, int top, int w, int h, const COLOR_RGB* color)
{
	for(int i=0;i<h;i++){
		for(int j=0;j<w;j++){
	//		graphics_draw_point(left+j,top+i,color[i*w+j]);		
		}	
	}
}


/// <summary>
/// 判断屏幕是否按下
/// </summary>
/// <param name="px">按下的x坐标</param>
/// <param name="py">按下的y坐标</param>
/// <returns>1 按下；0 未按下</returns>
int GD_is_touched(int* px, int* py){ return 0; }

/// <summary>
/// 等待按键输入，返回按键值。如果没有输入，就返回0.
/// 如果是单片机上，增加一个条件：如果3秒没有按下，就返回0.
/// </summary>
/// <returns></returns>
int GD_wait_key_input(void){ return 0; }








//  下面是文件操作相关


#include<stdio.h>
#include<stdlib.h>//exit()函数的头文件


/// <summary>
/// 从 "D:\\graph.txt" 提取图的数据信息。
/// 数据格式： 尾节点值 头节点值 边表值
/// </summary>
/// <param name="str">字符串数组</param>
/// <param name="str_capacity">字符串最大容量</param>
/// <returns>字符串长度，不会超出字符串最大容量，返回-1表示没找到图的文件</returns>
int get_graph_string(char* str,int str_capacity)
{
	return 1;
}

int main_file()
{
	
}


#endif // Win_Visual_Studio




